package com.info33.platform.system.service;

import java.util.List;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.info33.platform.common.mvc.vo.Result;
import com.info33.platform.system.dto.SysScheduleDTO;
import com.info33.platform.system.entity.SysSchedule;
import com.info33.platform.system.vo.SysScheduleVO;
import com.info33.platform.system.vo.SysUserVO;

/**
 * @author admin
 */
public interface SysScheduleService extends IService<SysSchedule> {

	/**
	 * 添加日程信息
	 * @param sysScheduleDTO
	 * @param currentUser
	 * @return
	 */
	Result<?> saveSchedule(SysScheduleDTO sysScheduleDTO, SysUserVO currentUser);

	/**
	 * 修改日程信息
	 * @param sysScheduleDTO
	 * @param currentUser
	 * @return
	 */
	Result<?> editSchedule(SysScheduleDTO sysScheduleDTO, SysUserVO currentUser);

	/**
	 * 分页获取日程信息列表
	 * @param page
	 * @param sysScheduleDTO
	 * @param sysUserVO 
	 * @return
	 */
	IPage<SysScheduleVO> pageSchedule(IPage<SysScheduleVO> page, SysScheduleDTO sysScheduleDTO, SysUserVO sysUserVO);

	/**
	 * 获取日程信息详情
	 * @param id
	 * @param sysUserVO 
	 * @return
	 */
	SysScheduleVO getDetail(Long id, SysUserVO sysUserVO);

	/**
	 * 完成日程信息
	 * @param id
	 * @param currentUser
	 * @return
	 */
	Result<?> finishSchedule(Long id, SysUserVO currentUser);

	/**
	 * 获取一段时间内日程信息列表
	 * @param startDate
	 * @param endDate
	 * @param currentUser
	 * @return
	 */
	List<SysScheduleVO> listSchedule(String startDate, String endDate, SysUserVO currentUser);

	/**
	 * 完成日程 -- 创建者
	 * @param ids
	 * @param currentUser
	 * @return
	 */
	Result<?> finishCreate(List<Long> ids, SysUserVO currentUser);

	/**
	 * 根据开始与结束日期查询有日程的日期列表
	 * @param startDate
	 * @param endDate 
	 * @param currentUser
	 * @return
	 */
	List<String> listScheduleDate(String startDate, String endDate, SysUserVO currentUser);


}